package com.zdp.leetcodeMiddle;


/*
* 题目描述：
* 给你一个正整数 n ，生成一个包含 1 到 n2 所有元素，且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
示例 1：
输入：n = 3
输出：[[1,2,3],[8,9,4],[7,6,5]]
示例 2：
输入：n = 1
输出：[[1]]
提示：
1 <= n <= 20
来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/spiral-matrix-ii
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
* */
public class 螺旋矩阵II_59 {
    public static void main(String[] args) {
        螺旋矩阵II_59 demo = new 螺旋矩阵II_59();
        int[][] ints = demo.generateMatrix(1);
        for(int[] i : ints){
            for(int l : i){
                System.out.print(l+",");
            }
            System.out.println();
        }
    }
    /*
    * 解题思路： 生成一个 1 - n^2 的矩阵， 顺时针螺旋 生成
    *  按圈来赋值吧 一层一层来进行生成
    * */
    public int[][] generateMatrix(int n) {
        int[][] result = new int[n][n];
        int i =0,j=0;
        // 当前坐标系
        int num = 1;
        while(i <= n){

            // (i,j) ---> (i,n-1)
            for(int l = j;l<n;l++){
                result[i][l] = num ++;
            }
            // (i+1,n-1) ---> (n-1,n-1)
            for(int l = i+1;l<n;l++){
                result[l][n-1] = num ++;
            }
            // (n-1,n-2)----> (n-1,j)
            for(int l = n-2;l>=j;l--){
                result[n-1][l] = num ++;
            }
            // (n-2,j) ---> (i+1,j)
            for(int l = n-2; l>i;l--){
                result[l][j] = num ++;
            }
            i++;
            j++;
            n--;
        }
        return result;
    }
}
